﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 数据类型01
{
    class Program
    {
        static void Main(string[] args)
        {
            // 数据类型分为值类型和引用类型
            // 值类型：在栈当中分配空间，由系统自动分配；（数字类型、布尔类型、枚举、结构体）
            // 引用类型：在堆当中分配空间，一般由程序员使用new关键字来分配空间（object、string、类、接口、委托、数组）

            //int a;                  // 值类型
            //int[] b = new int[3];   // 引用类型

            // 值类型变量互相赋值之后，两变量做的任何操作都互不影响，因为它们在不同的空间操作，值类型变量赋值又成为拷贝赋值
            // 引用类型互相赋值之后，他们共同使用一个空间，互相影响，一个值改变，另外一个也会改变

            int a, b;
            a = 3;
            b = a;
            b = 33;
            Console.WriteLine(b);   // 33
            Console.WriteLine(a);   // 3

            int[] c = new int[1];
            int[] d = new int[1];
            c[0] = 3;
            d = c;
            d[0] = 33;
            Console.WriteLine(d[0]);    // 33
            Console.WriteLine(c[0]);    // 3
        }
    }
}
